const fs = require('fs');
const path = require('path');
const pathURL = require('../utils/path');

process.on('message', (command) => {
    const arr = command.split(' ');
    //判断指令长度，长度大于等于2时才能够进入方法，只输入一个showFile会报错，把信息返回给父进程
    if (arr.length >= 2) {
        //判断输入的文件名是否存在
        if (!fs.existsSync(path.resolve(pathURL(`${arr[1]}`)))) {
            process.send('读取错误,请检查文件名是否正确');
        }
        if (arr.length === 2) { //没有多余指令
            fs.readFile(path.resolve(pathURL(`${arr[1]}`)), 'utf8', (err, data) => {
                if (err) {
                    process.on('读取错误，请检查路径是否正确')
                } else if (fs.statSync(pathURL(`${arr[1]}`)).isDirectory()) { //判断查询的是文件夹还是文件
                    process.on('读取错误，请检查输入的是文件夹名还是文件名');
                } else {
                    process.send(data.toString()); //如果以上都正确，将信息返回给父进程
                }
            })
        } else if (arr.length === 3) { //先判断输入指令是否符合规范，然后输出
            if (arr[2] === '-b') { //需要输出文件所占空间
                fs.readFile(path.resolve(pathURL(`${arr[1]}`)), 'utf8', (err, data) => {
                    if (err) {
                        console.log(err);
                        process.on('读取错误，清检查路径是否正确');
                    } else {
                        console.log(data.toString());
                        //使用fs.statSync(filePath).size()方法获取到了文件的大小
                        //将信息返回给父进程
                        process.send('文件所占空间为:' + fs.statSync(pathURL(`${arr[1]}`)).size + 'byte');
                    }
                })
            } else {
                process.send('请重新输入正确的指令！ 举例: showFile a.txt -b')
            }
        }
    } else {
        process.send('请输入正确的指令！ 举例: showFile a.txt');
    }
})